{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "997bc289",
   "metadata": {},
   "source": [
    "#### 1.导包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 457,
   "id": "984d85c9",
   "metadata": {},
   "outputs": [],
   "source": [
    "#导入pandas，并重命名为pd\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn import datasets\n",
    "#导入数据集拆分工具\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import r2_score,mean_squared_error\n",
    "# 导入pytorch包\n",
    "import torch\n",
    "from torch.utils import data\n",
    "from d2l import torch as d2l\n",
    "from torch import nn\n",
    "import seaborn as sns\n",
    "from sklearn.metrics import mean_absolute_error\n",
    "# 设置显示中文字体\n",
    "plt.rcParams[\"font.sans-serif\"] = [\"SimHei\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "40680810",
   "metadata": {},
   "source": [
    "#### 2.导入数据表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 458,
   "id": "baeb61d4",
   "metadata": {},
   "outputs": [],
   "source": [
    "#导入数据表\n",
    "#导入 covid.test 表\n",
    "covid_test = pd.read_csv('data/COVID_19/covid.test.csv', sep = ',')\n",
    "#导入 covid.train 表\n",
    "covid_train = pd.read_csv('data/COVID_19/covid.train.csv', sep = ',')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e3217e83",
   "metadata": {},
   "source": [
    "#### 4.数据预处理和特征值选取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 459,
   "id": "43a0232c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 去除id列\n",
    "covid_train1 = covid_train.drop('id',axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "be386b3d",
   "metadata": {},
   "source": [
    "#### 4.划分数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 460,
   "id": "4386d526",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>AL</th>\n",
       "      <th>AK</th>\n",
       "      <th>AZ</th>\n",
       "      <th>AR</th>\n",
       "      <th>CA</th>\n",
       "      <th>CO</th>\n",
       "      <th>CT</th>\n",
       "      <th>FL</th>\n",
       "      <th>GA</th>\n",
       "      <th>ID</th>\n",
       "      <th>...</th>\n",
       "      <th>shop.2</th>\n",
       "      <th>restaurant.2</th>\n",
       "      <th>spent_time.2</th>\n",
       "      <th>large_event.2</th>\n",
       "      <th>public_transit.2</th>\n",
       "      <th>anxious.2</th>\n",
       "      <th>depressed.2</th>\n",
       "      <th>felt_isolated.2</th>\n",
       "      <th>worried_become_ill.2</th>\n",
       "      <th>worried_finances.2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>62.434539</td>\n",
       "      <td>23.812411</td>\n",
       "      <td>43.430423</td>\n",
       "      <td>16.151527</td>\n",
       "      <td>1.602635</td>\n",
       "      <td>15.409449</td>\n",
       "      <td>12.088688</td>\n",
       "      <td>16.702086</td>\n",
       "      <td>53.991549</td>\n",
       "      <td>43.604229</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>62.024517</td>\n",
       "      <td>23.682974</td>\n",
       "      <td>43.196313</td>\n",
       "      <td>16.123386</td>\n",
       "      <td>1.641863</td>\n",
       "      <td>15.230063</td>\n",
       "      <td>11.809047</td>\n",
       "      <td>16.506973</td>\n",
       "      <td>54.185521</td>\n",
       "      <td>42.665766</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>62.116842</td>\n",
       "      <td>23.593983</td>\n",
       "      <td>43.362200</td>\n",
       "      <td>16.159971</td>\n",
       "      <td>1.677523</td>\n",
       "      <td>15.717207</td>\n",
       "      <td>12.355918</td>\n",
       "      <td>16.273294</td>\n",
       "      <td>53.637069</td>\n",
       "      <td>42.972417</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>61.294809</td>\n",
       "      <td>22.576992</td>\n",
       "      <td>42.954574</td>\n",
       "      <td>15.544373</td>\n",
       "      <td>1.578030</td>\n",
       "      <td>15.295650</td>\n",
       "      <td>12.218123</td>\n",
       "      <td>16.045504</td>\n",
       "      <td>52.446223</td>\n",
       "      <td>42.907472</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>60.664482</td>\n",
       "      <td>22.091433</td>\n",
       "      <td>43.290957</td>\n",
       "      <td>15.214655</td>\n",
       "      <td>1.641667</td>\n",
       "      <td>14.778802</td>\n",
       "      <td>12.417256</td>\n",
       "      <td>16.134238</td>\n",
       "      <td>52.560315</td>\n",
       "      <td>43.321985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2695</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>50.024971</td>\n",
       "      <td>15.090116</td>\n",
       "      <td>30.839219</td>\n",
       "      <td>7.849525</td>\n",
       "      <td>1.760094</td>\n",
       "      <td>14.617563</td>\n",
       "      <td>11.163213</td>\n",
       "      <td>18.742673</td>\n",
       "      <td>68.024690</td>\n",
       "      <td>38.920206</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2696</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>49.885129</td>\n",
       "      <td>14.779264</td>\n",
       "      <td>30.617100</td>\n",
       "      <td>7.754800</td>\n",
       "      <td>1.780730</td>\n",
       "      <td>14.513419</td>\n",
       "      <td>11.281241</td>\n",
       "      <td>18.539741</td>\n",
       "      <td>67.855755</td>\n",
       "      <td>39.224244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2697</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>50.056772</td>\n",
       "      <td>14.961085</td>\n",
       "      <td>30.595194</td>\n",
       "      <td>7.744075</td>\n",
       "      <td>1.921828</td>\n",
       "      <td>14.160990</td>\n",
       "      <td>11.163526</td>\n",
       "      <td>18.702564</td>\n",
       "      <td>67.731162</td>\n",
       "      <td>38.740651</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2698</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>49.620924</td>\n",
       "      <td>14.609582</td>\n",
       "      <td>30.420998</td>\n",
       "      <td>7.687974</td>\n",
       "      <td>1.992580</td>\n",
       "      <td>14.409427</td>\n",
       "      <td>11.330301</td>\n",
       "      <td>19.134697</td>\n",
       "      <td>67.795100</td>\n",
       "      <td>38.595125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2699</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>49.510599</td>\n",
       "      <td>14.464053</td>\n",
       "      <td>30.469791</td>\n",
       "      <td>7.692942</td>\n",
       "      <td>1.966064</td>\n",
       "      <td>14.616400</td>\n",
       "      <td>11.522773</td>\n",
       "      <td>19.295834</td>\n",
       "      <td>68.284078</td>\n",
       "      <td>38.453820</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2700 rows × 93 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       AL   AK   AZ   AR   CA   CO   CT   FL   GA   ID  ...     shop.2  \\\n",
       "0     1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  62.434539   \n",
       "1     1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  62.024517   \n",
       "2     1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  62.116842   \n",
       "3     1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  61.294809   \n",
       "4     1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  60.664482   \n",
       "...   ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...        ...   \n",
       "2695  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  50.024971   \n",
       "2696  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  49.885129   \n",
       "2697  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  50.056772   \n",
       "2698  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  49.620924   \n",
       "2699  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  49.510599   \n",
       "\n",
       "      restaurant.2  spent_time.2  large_event.2  public_transit.2  anxious.2  \\\n",
       "0        23.812411     43.430423      16.151527          1.602635  15.409449   \n",
       "1        23.682974     43.196313      16.123386          1.641863  15.230063   \n",
       "2        23.593983     43.362200      16.159971          1.677523  15.717207   \n",
       "3        22.576992     42.954574      15.544373          1.578030  15.295650   \n",
       "4        22.091433     43.290957      15.214655          1.641667  14.778802   \n",
       "...            ...           ...            ...               ...        ...   \n",
       "2695     15.090116     30.839219       7.849525          1.760094  14.617563   \n",
       "2696     14.779264     30.617100       7.754800          1.780730  14.513419   \n",
       "2697     14.961085     30.595194       7.744075          1.921828  14.160990   \n",
       "2698     14.609582     30.420998       7.687974          1.992580  14.409427   \n",
       "2699     14.464053     30.469791       7.692942          1.966064  14.616400   \n",
       "\n",
       "      depressed.2  felt_isolated.2  worried_become_ill.2  worried_finances.2  \n",
       "0       12.088688        16.702086             53.991549           43.604229  \n",
       "1       11.809047        16.506973             54.185521           42.665766  \n",
       "2       12.355918        16.273294             53.637069           42.972417  \n",
       "3       12.218123        16.045504             52.446223           42.907472  \n",
       "4       12.417256        16.134238             52.560315           43.321985  \n",
       "...           ...              ...                   ...                 ...  \n",
       "2695    11.163213        18.742673             68.024690           38.920206  \n",
       "2696    11.281241        18.539741             67.855755           39.224244  \n",
       "2697    11.163526        18.702564             67.731162           38.740651  \n",
       "2698    11.330301        19.134697             67.795100           38.595125  \n",
       "2699    11.522773        19.295834             68.284078           38.453820  \n",
       "\n",
       "[2700 rows x 93 columns]"
      ]
     },
     "execution_count": 460,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train = covid_train1.drop(['tested_positive.2'], axis=1)\n",
    "target = covid_train['tested_positive.2']\n",
    "train"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a0c647ba",
   "metadata": {},
   "source": [
    "#### 5.特征值选择-1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 461,
   "id": "4421ddf3",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.feature_selection import SelectKBest\n",
    "from sklearn.feature_selection import f_regression\n",
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 462,
   "id": "a0eb9d6b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>93.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>3408.476250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>16933.163528</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.012080</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>11.660815</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>69.027593</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>208.122647</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>148069.658278</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               Score\n",
       "count      93.000000\n",
       "mean     3408.476250\n",
       "std     16933.163528\n",
       "min         0.012080\n",
       "25%        11.660815\n",
       "50%        69.027593\n",
       "75%       208.122647\n",
       "max    148069.658278"
      ]
     },
     "execution_count": 462,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bestfeatures = SelectKBest(score_func=f_regression, k=30)\n",
    "fit = bestfeatures.fit(train,target)\n",
    "train_scores = pd.DataFrame(fit.scores_)\n",
    "train_columns = pd.DataFrame(train.columns)\n",
    "featureScores = pd.concat([train_columns,train_scores],axis=1)\n",
    "featureScores.columns = ['Specs','Score'] \n",
    "# 按照分数排序\n",
    "featureScores = featureScores.sort_values(by='Score', ascending=False)\n",
    "featureScores.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 463,
   "id": "aedc6d20",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导出数据表\n",
    "# featureScores.to_excel(r'C:\\Users\\Administrator\\Desktop\\featureScores.xlsx')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 464,
   "id": "0aedcfb5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([17, 40, 41, 42, 43, 47, 49, 51, 55, 56, 57, 58, 59, 60, 61, 65, 67,\n",
       "       69, 73, 74, 75, 76, 77, 78, 79, 83, 85, 87, 91, 92], dtype=int64)"
      ]
     },
     "execution_count": 464,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 选取前30\n",
    "bestfeatures = SelectKBest(score_func=f_regression, k=30)\n",
    "fit = bestfeatures.fit(train,target)\n",
    "cols = bestfeatures.get_support(indices=True)\n",
    "cols"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 465,
   "id": "6a0a0c94",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "train = train.iloc[:,cols]\n",
    "# 去除MA列\n",
    "train1 = train.drop('MA',axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 466,
   "id": "0e8e6414",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cli</th>\n",
       "      <th>ili</th>\n",
       "      <th>hh_cmnty_cli</th>\n",
       "      <th>nohh_cmnty_cli</th>\n",
       "      <th>shop</th>\n",
       "      <th>spent_time</th>\n",
       "      <th>public_transit</th>\n",
       "      <th>worried_become_ill</th>\n",
       "      <th>worried_finances</th>\n",
       "      <th>tested_positive</th>\n",
       "      <th>...</th>\n",
       "      <th>tested_positive.1</th>\n",
       "      <th>cli.2</th>\n",
       "      <th>ili.2</th>\n",
       "      <th>hh_cmnty_cli.2</th>\n",
       "      <th>nohh_cmnty_cli.2</th>\n",
       "      <th>shop.2</th>\n",
       "      <th>spent_time.2</th>\n",
       "      <th>public_transit.2</th>\n",
       "      <th>worried_become_ill.2</th>\n",
       "      <th>worried_finances.2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.814610</td>\n",
       "      <td>0.771356</td>\n",
       "      <td>25.648907</td>\n",
       "      <td>21.242063</td>\n",
       "      <td>63.139094</td>\n",
       "      <td>44.726055</td>\n",
       "      <td>1.716262</td>\n",
       "      <td>53.439316</td>\n",
       "      <td>43.279629</td>\n",
       "      <td>19.586492</td>\n",
       "      <td>...</td>\n",
       "      <td>20.151838</td>\n",
       "      <td>0.897802</td>\n",
       "      <td>0.887893</td>\n",
       "      <td>26.060544</td>\n",
       "      <td>21.503832</td>\n",
       "      <td>62.434539</td>\n",
       "      <td>43.430423</td>\n",
       "      <td>1.602635</td>\n",
       "      <td>53.991549</td>\n",
       "      <td>43.604229</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.838995</td>\n",
       "      <td>0.807767</td>\n",
       "      <td>25.679101</td>\n",
       "      <td>21.280270</td>\n",
       "      <td>63.318650</td>\n",
       "      <td>44.385166</td>\n",
       "      <td>1.664819</td>\n",
       "      <td>53.256795</td>\n",
       "      <td>43.622728</td>\n",
       "      <td>20.151838</td>\n",
       "      <td>...</td>\n",
       "      <td>20.704935</td>\n",
       "      <td>0.972842</td>\n",
       "      <td>0.965496</td>\n",
       "      <td>25.754087</td>\n",
       "      <td>21.016210</td>\n",
       "      <td>62.024517</td>\n",
       "      <td>43.196313</td>\n",
       "      <td>1.641863</td>\n",
       "      <td>54.185521</td>\n",
       "      <td>42.665766</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.897802</td>\n",
       "      <td>0.887893</td>\n",
       "      <td>26.060544</td>\n",
       "      <td>21.503832</td>\n",
       "      <td>62.434539</td>\n",
       "      <td>43.430423</td>\n",
       "      <td>1.602635</td>\n",
       "      <td>53.991549</td>\n",
       "      <td>43.604229</td>\n",
       "      <td>20.704935</td>\n",
       "      <td>...</td>\n",
       "      <td>21.292911</td>\n",
       "      <td>0.955306</td>\n",
       "      <td>0.963079</td>\n",
       "      <td>25.947015</td>\n",
       "      <td>20.941798</td>\n",
       "      <td>62.116842</td>\n",
       "      <td>43.362200</td>\n",
       "      <td>1.677523</td>\n",
       "      <td>53.637069</td>\n",
       "      <td>42.972417</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.972842</td>\n",
       "      <td>0.965496</td>\n",
       "      <td>25.754087</td>\n",
       "      <td>21.016210</td>\n",
       "      <td>62.024517</td>\n",
       "      <td>43.196313</td>\n",
       "      <td>1.641863</td>\n",
       "      <td>54.185521</td>\n",
       "      <td>42.665766</td>\n",
       "      <td>21.292911</td>\n",
       "      <td>...</td>\n",
       "      <td>21.166656</td>\n",
       "      <td>0.947513</td>\n",
       "      <td>0.968764</td>\n",
       "      <td>26.350501</td>\n",
       "      <td>21.109971</td>\n",
       "      <td>61.294809</td>\n",
       "      <td>42.954574</td>\n",
       "      <td>1.578030</td>\n",
       "      <td>52.446223</td>\n",
       "      <td>42.907472</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.955306</td>\n",
       "      <td>0.963079</td>\n",
       "      <td>25.947015</td>\n",
       "      <td>20.941798</td>\n",
       "      <td>62.116842</td>\n",
       "      <td>43.362200</td>\n",
       "      <td>1.677523</td>\n",
       "      <td>53.637069</td>\n",
       "      <td>42.972417</td>\n",
       "      <td>21.166656</td>\n",
       "      <td>...</td>\n",
       "      <td>19.896607</td>\n",
       "      <td>0.883833</td>\n",
       "      <td>0.893020</td>\n",
       "      <td>26.480624</td>\n",
       "      <td>21.003982</td>\n",
       "      <td>60.664482</td>\n",
       "      <td>43.290957</td>\n",
       "      <td>1.641667</td>\n",
       "      <td>52.560315</td>\n",
       "      <td>43.321985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2695</th>\n",
       "      <td>0.655823</td>\n",
       "      <td>0.659976</td>\n",
       "      <td>25.265366</td>\n",
       "      <td>20.468897</td>\n",
       "      <td>50.265694</td>\n",
       "      <td>31.597793</td>\n",
       "      <td>1.768811</td>\n",
       "      <td>68.115748</td>\n",
       "      <td>38.478143</td>\n",
       "      <td>13.869286</td>\n",
       "      <td>...</td>\n",
       "      <td>13.434180</td>\n",
       "      <td>0.586713</td>\n",
       "      <td>0.597559</td>\n",
       "      <td>25.271178</td>\n",
       "      <td>20.770195</td>\n",
       "      <td>50.024971</td>\n",
       "      <td>30.839219</td>\n",
       "      <td>1.760094</td>\n",
       "      <td>68.024690</td>\n",
       "      <td>38.920206</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2696</th>\n",
       "      <td>0.598352</td>\n",
       "      <td>0.602552</td>\n",
       "      <td>25.299465</td>\n",
       "      <td>20.756444</td>\n",
       "      <td>50.050349</td>\n",
       "      <td>31.656358</td>\n",
       "      <td>1.789015</td>\n",
       "      <td>67.691795</td>\n",
       "      <td>38.953184</td>\n",
       "      <td>13.434180</td>\n",
       "      <td>...</td>\n",
       "      <td>13.008853</td>\n",
       "      <td>0.576435</td>\n",
       "      <td>0.595312</td>\n",
       "      <td>24.607461</td>\n",
       "      <td>20.176201</td>\n",
       "      <td>49.885129</td>\n",
       "      <td>30.617100</td>\n",
       "      <td>1.780730</td>\n",
       "      <td>67.855755</td>\n",
       "      <td>39.224244</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2697</th>\n",
       "      <td>0.586713</td>\n",
       "      <td>0.597559</td>\n",
       "      <td>25.271178</td>\n",
       "      <td>20.770195</td>\n",
       "      <td>50.024971</td>\n",
       "      <td>30.839219</td>\n",
       "      <td>1.760094</td>\n",
       "      <td>68.024690</td>\n",
       "      <td>38.920206</td>\n",
       "      <td>13.008853</td>\n",
       "      <td>...</td>\n",
       "      <td>12.725638</td>\n",
       "      <td>0.562426</td>\n",
       "      <td>0.572969</td>\n",
       "      <td>24.020275</td>\n",
       "      <td>19.654514</td>\n",
       "      <td>50.056772</td>\n",
       "      <td>30.595194</td>\n",
       "      <td>1.921828</td>\n",
       "      <td>67.731162</td>\n",
       "      <td>38.740651</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2698</th>\n",
       "      <td>0.576435</td>\n",
       "      <td>0.595312</td>\n",
       "      <td>24.607461</td>\n",
       "      <td>20.176201</td>\n",
       "      <td>49.885129</td>\n",
       "      <td>30.617100</td>\n",
       "      <td>1.780730</td>\n",
       "      <td>67.855755</td>\n",
       "      <td>39.224244</td>\n",
       "      <td>12.725638</td>\n",
       "      <td>...</td>\n",
       "      <td>12.613441</td>\n",
       "      <td>0.600671</td>\n",
       "      <td>0.611160</td>\n",
       "      <td>23.797738</td>\n",
       "      <td>19.519105</td>\n",
       "      <td>49.620924</td>\n",
       "      <td>30.420998</td>\n",
       "      <td>1.992580</td>\n",
       "      <td>67.795100</td>\n",
       "      <td>38.595125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2699</th>\n",
       "      <td>0.562426</td>\n",
       "      <td>0.572969</td>\n",
       "      <td>24.020275</td>\n",
       "      <td>19.654514</td>\n",
       "      <td>50.056772</td>\n",
       "      <td>30.595194</td>\n",
       "      <td>1.921828</td>\n",
       "      <td>67.731162</td>\n",
       "      <td>38.740651</td>\n",
       "      <td>12.613441</td>\n",
       "      <td>...</td>\n",
       "      <td>12.477227</td>\n",
       "      <td>0.560519</td>\n",
       "      <td>0.571126</td>\n",
       "      <td>23.467835</td>\n",
       "      <td>19.174193</td>\n",
       "      <td>49.510599</td>\n",
       "      <td>30.469791</td>\n",
       "      <td>1.966064</td>\n",
       "      <td>68.284078</td>\n",
       "      <td>38.453820</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2700 rows × 29 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           cli       ili  hh_cmnty_cli  nohh_cmnty_cli       shop  spent_time  \\\n",
       "0     0.814610  0.771356     25.648907       21.242063  63.139094   44.726055   \n",
       "1     0.838995  0.807767     25.679101       21.280270  63.318650   44.385166   \n",
       "2     0.897802  0.887893     26.060544       21.503832  62.434539   43.430423   \n",
       "3     0.972842  0.965496     25.754087       21.016210  62.024517   43.196313   \n",
       "4     0.955306  0.963079     25.947015       20.941798  62.116842   43.362200   \n",
       "...        ...       ...           ...             ...        ...         ...   \n",
       "2695  0.655823  0.659976     25.265366       20.468897  50.265694   31.597793   \n",
       "2696  0.598352  0.602552     25.299465       20.756444  50.050349   31.656358   \n",
       "2697  0.586713  0.597559     25.271178       20.770195  50.024971   30.839219   \n",
       "2698  0.576435  0.595312     24.607461       20.176201  49.885129   30.617100   \n",
       "2699  0.562426  0.572969     24.020275       19.654514  50.056772   30.595194   \n",
       "\n",
       "      public_transit  worried_become_ill  worried_finances  tested_positive  \\\n",
       "0           1.716262           53.439316         43.279629        19.586492   \n",
       "1           1.664819           53.256795         43.622728        20.151838   \n",
       "2           1.602635           53.991549         43.604229        20.704935   \n",
       "3           1.641863           54.185521         42.665766        21.292911   \n",
       "4           1.677523           53.637069         42.972417        21.166656   \n",
       "...              ...                 ...               ...              ...   \n",
       "2695        1.768811           68.115748         38.478143        13.869286   \n",
       "2696        1.789015           67.691795         38.953184        13.434180   \n",
       "2697        1.760094           68.024690         38.920206        13.008853   \n",
       "2698        1.780730           67.855755         39.224244        12.725638   \n",
       "2699        1.921828           67.731162         38.740651        12.613441   \n",
       "\n",
       "      ...  tested_positive.1     cli.2     ili.2  hh_cmnty_cli.2  \\\n",
       "0     ...          20.151838  0.897802  0.887893       26.060544   \n",
       "1     ...          20.704935  0.972842  0.965496       25.754087   \n",
       "2     ...          21.292911  0.955306  0.963079       25.947015   \n",
       "3     ...          21.166656  0.947513  0.968764       26.350501   \n",
       "4     ...          19.896607  0.883833  0.893020       26.480624   \n",
       "...   ...                ...       ...       ...             ...   \n",
       "2695  ...          13.434180  0.586713  0.597559       25.271178   \n",
       "2696  ...          13.008853  0.576435  0.595312       24.607461   \n",
       "2697  ...          12.725638  0.562426  0.572969       24.020275   \n",
       "2698  ...          12.613441  0.600671  0.611160       23.797738   \n",
       "2699  ...          12.477227  0.560519  0.571126       23.467835   \n",
       "\n",
       "      nohh_cmnty_cli.2     shop.2  spent_time.2  public_transit.2  \\\n",
       "0            21.503832  62.434539     43.430423          1.602635   \n",
       "1            21.016210  62.024517     43.196313          1.641863   \n",
       "2            20.941798  62.116842     43.362200          1.677523   \n",
       "3            21.109971  61.294809     42.954574          1.578030   \n",
       "4            21.003982  60.664482     43.290957          1.641667   \n",
       "...                ...        ...           ...               ...   \n",
       "2695         20.770195  50.024971     30.839219          1.760094   \n",
       "2696         20.176201  49.885129     30.617100          1.780730   \n",
       "2697         19.654514  50.056772     30.595194          1.921828   \n",
       "2698         19.519105  49.620924     30.420998          1.992580   \n",
       "2699         19.174193  49.510599     30.469791          1.966064   \n",
       "\n",
       "      worried_become_ill.2  worried_finances.2  \n",
       "0                53.991549           43.604229  \n",
       "1                54.185521           42.665766  \n",
       "2                53.637069           42.972417  \n",
       "3                52.446223           42.907472  \n",
       "4                52.560315           43.321985  \n",
       "...                    ...                 ...  \n",
       "2695             68.024690           38.920206  \n",
       "2696             67.855755           39.224244  \n",
       "2697             67.731162           38.740651  \n",
       "2698             67.795100           38.595125  \n",
       "2699             68.284078           38.453820  \n",
       "\n",
       "[2700 rows x 29 columns]"
      ]
     },
     "execution_count": 466,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 467,
   "id": "96bfef17",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.42115652, -0.57792261, -0.41724228, ..., -0.74371918,\n",
       "        -1.74350711, -0.18432414],\n",
       "       [-0.36312659, -0.4919582 , -0.41392139, ..., -0.70646391,\n",
       "        -1.71231662, -0.36372625],\n",
       "       [-0.22318412, -0.30277996, -0.37196795, ..., -0.6725974 ,\n",
       "        -1.80050724, -0.30510505],\n",
       "       ...,\n",
       "       [-0.96348806, -0.98825706, -0.45878724, ..., -0.44057832,\n",
       "         0.46581213, -1.11407397],\n",
       "       [-0.98794658, -0.9935615 , -0.53178689, ..., -0.37338446,\n",
       "         0.47609325, -1.14189356],\n",
       "       [-1.02128406, -1.04631266, -0.59636922, ..., -0.39856624,\n",
       "         0.55472064, -1.16890632]])"
      ]
     },
     "execution_count": 467,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "import numpy as np\n",
    "# 创建StandardScaler对象\n",
    "scaler = StandardScaler()\n",
    "# 对数据进行标准化处理\n",
    "train1 = scaler.fit_transform(train1)\n",
    "train1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 468,
   "id": "5a712376",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[-0.4212, -0.5779, -0.4172,  ..., -0.7437, -1.7435, -0.1843],\n",
      "        [-0.3631, -0.4920, -0.4139,  ..., -0.7065, -1.7123, -0.3637],\n",
      "        [-0.2232, -0.3028, -0.3720,  ..., -0.6726, -1.8005, -0.3051],\n",
      "        ...,\n",
      "        [-0.9635, -0.9883, -0.4588,  ..., -0.4406,  0.4658, -1.1141],\n",
      "        [-0.9879, -0.9936, -0.5318,  ..., -0.3734,  0.4761, -1.1419],\n",
      "        [-1.0213, -1.0463, -0.5964,  ..., -0.3986,  0.5547, -1.1689]],\n",
      "       dtype=torch.float64)\n",
      "tensor([20.7049, 21.2929, 21.1667,  ..., 12.6134, 12.4772, 11.8117],\n",
      "       dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "X,y = torch.tensor(train1),torch.tensor(target)\n",
    "print(X,y,sep='\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 469,
   "id": "18d8557b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(torch.Size([2160, 29]),\n",
       " torch.Size([540, 29]),\n",
       " torch.Size([2160]),\n",
       " torch.Size([540]))"
      ]
     },
     "execution_count": 469,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 切割数据样本 20%验证集；80%训练集\n",
    "X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)\n",
    "#检查训练集和验证集中样本的形态\n",
    "X_train.shape,X_test.shape,y_train.shape,y_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 470,
   "id": "217aa577",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_16484\\632151407.py:1: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "  X_train = torch.tensor(X_train,dtype=torch.float)\n",
      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_16484\\632151407.py:2: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "  y_train = torch.tensor(y_train,dtype=torch.float32)\n",
      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_16484\\632151407.py:3: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "  X_test = torch.tensor(X_test,dtype=torch.float32)\n",
      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_16484\\632151407.py:4: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "  y_test = torch.tensor(y_test,dtype=torch.float32)\n"
     ]
    }
   ],
   "source": [
    "\n",
    "X_train = torch.tensor(X_train,dtype=torch.float)\n",
    "y_train = torch.tensor(y_train,dtype=torch.float32)\n",
    "X_test = torch.tensor(X_test,dtype=torch.float32)\n",
    "y_test = torch.tensor(y_test,dtype=torch.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 471,
   "id": "40d5e971",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义多层感知机模型\n",
    "class MLP(nn.Module):\n",
    "    def __init__(self, input_size):\n",
    "        super(MLP, self).__init__()\n",
    "        self.fc1 = nn.Linear(input_size, 64)  # 输入层\n",
    "        self.relu = nn.ReLU(),#激活函数ReLU\n",
    "        self.fc2 = nn.Linear(64, 32)  # 隐藏层\n",
    "        self.fc3 = nn.Linear(32, 1)  # 输出层\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = torch.relu(self.fc1(x))\n",
    "        x = self.fc2(x)\n",
    "        x = self.fc3(x)\n",
    "        return x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 472,
   "id": "115b5f10",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch._C.Generator at 0x256b4fbbd70>"
      ]
     },
     "execution_count": 472,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 设置随机种子\n",
    "torch.manual_seed(42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 473,
   "id": "ab65c0c4",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 设置输入特征的维度\n",
    "input_dim = X_train.shape[1]\n",
    "# 设置学习率\n",
    "lr = 0.005\n",
    "# 设置迭代次数\n",
    "num_epochs = 10001"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 474,
   "id": "9f914693",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "best_l1_lambda: 0.001\n"
     ]
    }
   ],
   "source": [
    "# L1正则化权重的自动选取\n",
    "from sklearn.linear_model import LassoCV\n",
    "# 创建一个LassoCV对象，指定正则化路径和交叉验证的折数\n",
    "lasso_cv = LassoCV(alphas=[0.0001,0.001, 0.01, 0.1, 1.0], cv=5,max_iter=100000)\n",
    "# 在训练数据上拟合模型\n",
    "lasso_cv.fit(X_train, y_train)\n",
    "# 选择最佳正则化权重\n",
    "best_l1_lambda = lasso_cv.alpha_\n",
    "# 打印输出最佳的L1正则化权重\n",
    "print(\"best_l1_lambda:\", best_l1_lambda)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 475,
   "id": "812f3009",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 模型初始化\n",
    "model = MLP(input_dim)\n",
    "# 定义损失函数\n",
    "criterion = nn.MSELoss()\n",
    "# 使用Adam优化器\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 476,
   "id": "49e9bd59",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "e:\\anaconda3\\lib\\site-packages\\torch\\nn\\modules\\loss.py:536: UserWarning: Using a target size (torch.Size([2160])) that is different to the input size (torch.Size([2160, 1])). This will likely lead to incorrect results due to broadcasting. Please ensure they have the same size.\n",
      "  return F.mse_loss(input, target, reduction=self.reduction)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch [100/10001], Loss: 7.2545, RMSE: 2.6701\n",
      "Epoch [200/10001], Loss: 1.5396, RMSE: 1.2349\n",
      "Epoch [300/10001], Loss: 0.9884, RMSE: 0.9933\n",
      "Epoch [400/10001], Loss: 0.9001, RMSE: 0.9485\n",
      "Epoch [500/10001], Loss: 0.8697, RMSE: 0.9325\n",
      "Epoch [600/10001], Loss: 0.8535, RMSE: 0.9238\n",
      "Epoch [700/10001], Loss: 0.8412, RMSE: 0.9171\n",
      "Epoch [800/10001], Loss: 0.8310, RMSE: 0.9116\n",
      "Epoch [900/10001], Loss: 0.8220, RMSE: 0.9066\n",
      "Epoch [1000/10001], Loss: 0.8138, RMSE: 0.9021\n",
      "Epoch [1100/10001], Loss: 0.8060, RMSE: 0.8977\n",
      "Epoch [1200/10001], Loss: 0.7987, RMSE: 0.8937\n",
      "Epoch [1300/10001], Loss: 0.7944, RMSE: 0.8912\n",
      "Epoch [1400/10001], Loss: 0.7865, RMSE: 0.8867\n",
      "Epoch [1500/10001], Loss: 0.7801, RMSE: 0.8834\n",
      "Epoch [1600/10001], Loss: 0.7766, RMSE: 0.8815\n",
      "Epoch [1700/10001], Loss: 0.7690, RMSE: 0.8770\n",
      "Epoch [1800/10001], Loss: 0.7686, RMSE: 0.8768\n",
      "Epoch [1900/10001], Loss: 0.7595, RMSE: 0.8715\n",
      "Epoch [2000/10001], Loss: 0.7545, RMSE: 0.8687\n",
      "Epoch [2100/10001], Loss: 0.7587, RMSE: 0.8704\n",
      "Epoch [2200/10001], Loss: 0.7527, RMSE: 0.8672\n",
      "Epoch [2300/10001], Loss: 0.7404, RMSE: 0.8599\n",
      "Epoch [2400/10001], Loss: 0.7350, RMSE: 0.8581\n",
      "Epoch [2500/10001], Loss: 0.7375, RMSE: 0.8608\n",
      "Epoch [2600/10001], Loss: 0.7315, RMSE: 0.8548\n",
      "Epoch [2700/10001], Loss: 0.7167, RMSE: 0.8473\n",
      "Epoch [2800/10001], Loss: 0.7152, RMSE: 0.8433\n",
      "Epoch [2900/10001], Loss: 0.7119, RMSE: 0.8432\n",
      "Epoch [3000/10001], Loss: 0.7034, RMSE: 0.8370\n",
      "Epoch [3100/10001], Loss: 0.6935, RMSE: 0.8329\n",
      "Epoch [3200/10001], Loss: 0.6892, RMSE: 0.8309\n",
      "Epoch [3300/10001], Loss: 0.6994, RMSE: 0.8355\n",
      "Epoch [3400/10001], Loss: 0.6814, RMSE: 0.8265\n",
      "Epoch [3500/10001], Loss: 0.6779, RMSE: 0.8220\n",
      "Epoch [3600/10001], Loss: 0.6847, RMSE: 0.8299\n",
      "Epoch [3700/10001], Loss: 0.6683, RMSE: 0.8183\n",
      "Epoch [3800/10001], Loss: 0.6913, RMSE: 0.8325\n",
      "Epoch [3900/10001], Loss: 0.6694, RMSE: 0.8204\n",
      "Epoch [4000/10001], Loss: 0.6554, RMSE: 0.8097\n",
      "Epoch [4100/10001], Loss: 0.6737, RMSE: 0.8194\n",
      "Epoch [4200/10001], Loss: 0.6530, RMSE: 0.8092\n",
      "Epoch [4300/10001], Loss: 0.6828, RMSE: 0.8231\n",
      "Epoch [4400/10001], Loss: 0.6651, RMSE: 0.8175\n",
      "Epoch [4500/10001], Loss: 0.6438, RMSE: 0.8020\n",
      "Epoch [4600/10001], Loss: 0.6648, RMSE: 0.8165\n",
      "Epoch [4700/10001], Loss: 0.6442, RMSE: 0.8011\n",
      "Epoch [4800/10001], Loss: 0.6604, RMSE: 0.8080\n",
      "Epoch [4900/10001], Loss: 0.6346, RMSE: 0.7966\n",
      "Epoch [5000/10001], Loss: 0.6447, RMSE: 0.8047\n",
      "Epoch [5100/10001], Loss: 0.6316, RMSE: 0.7952\n",
      "Epoch [5200/10001], Loss: 0.6379, RMSE: 0.8017\n",
      "Epoch [5300/10001], Loss: 0.6298, RMSE: 0.7944\n",
      "Epoch [5400/10001], Loss: 0.6445, RMSE: 0.8019\n",
      "Epoch [5500/10001], Loss: 0.6353, RMSE: 0.7946\n",
      "Epoch [5600/10001], Loss: 0.6273, RMSE: 0.7923\n",
      "Epoch [5700/10001], Loss: 0.6480, RMSE: 0.8059\n",
      "Epoch [5800/10001], Loss: 0.6259, RMSE: 0.7909\n",
      "Epoch [5900/10001], Loss: 0.6267, RMSE: 0.7893\n",
      "Epoch [6000/10001], Loss: 0.6177, RMSE: 0.7864\n",
      "Epoch [6100/10001], Loss: 0.6168, RMSE: 0.7849\n",
      "Epoch [6200/10001], Loss: 0.6280, RMSE: 0.7941\n",
      "Epoch [6300/10001], Loss: 0.6154, RMSE: 0.7839\n",
      "Epoch [6400/10001], Loss: 0.6390, RMSE: 0.8065\n",
      "Epoch [6500/10001], Loss: 0.6544, RMSE: 0.8014\n",
      "Epoch [6600/10001], Loss: 0.6099, RMSE: 0.7806\n",
      "Epoch [6700/10001], Loss: 0.6092, RMSE: 0.7812\n",
      "Epoch [6800/10001], Loss: 0.6065, RMSE: 0.7791\n",
      "Epoch [6900/10001], Loss: 0.6135, RMSE: 0.7831\n",
      "Epoch [7000/10001], Loss: 0.6045, RMSE: 0.7778\n",
      "Epoch [7100/10001], Loss: 0.6190, RMSE: 0.7828\n",
      "Epoch [7200/10001], Loss: 0.6138, RMSE: 0.7835\n",
      "Epoch [7300/10001], Loss: 0.6038, RMSE: 0.7771\n",
      "Epoch [7400/10001], Loss: 0.6076, RMSE: 0.7762\n",
      "Epoch [7500/10001], Loss: 0.6068, RMSE: 0.7809\n",
      "Epoch [7600/10001], Loss: 0.6054, RMSE: 0.7761\n",
      "Epoch [7700/10001], Loss: 0.5996, RMSE: 0.7731\n",
      "Epoch [7800/10001], Loss: 0.6135, RMSE: 0.7847\n",
      "Epoch [7900/10001], Loss: 0.6305, RMSE: 0.7954\n",
      "Epoch [8000/10001], Loss: 0.6025, RMSE: 0.7735\n",
      "Epoch [8100/10001], Loss: 0.6037, RMSE: 0.7792\n",
      "Epoch [8200/10001], Loss: 0.6123, RMSE: 0.7809\n",
      "Epoch [8300/10001], Loss: 0.5933, RMSE: 0.7718\n",
      "Epoch [8400/10001], Loss: 0.5998, RMSE: 0.7735\n",
      "Epoch [8500/10001], Loss: 0.6200, RMSE: 0.7890\n",
      "Epoch [8600/10001], Loss: 0.5966, RMSE: 0.7709\n",
      "Epoch [8700/10001], Loss: 0.6379, RMSE: 0.8027\n",
      "Epoch [8800/10001], Loss: 0.5999, RMSE: 0.7724\n",
      "Epoch [8900/10001], Loss: 0.6214, RMSE: 0.7836\n",
      "Epoch [9000/10001], Loss: 0.6003, RMSE: 0.7770\n",
      "Epoch [9100/10001], Loss: 0.5876, RMSE: 0.7665\n",
      "Epoch [9200/10001], Loss: 0.5873, RMSE: 0.7664\n",
      "Epoch [9300/10001], Loss: 0.5884, RMSE: 0.7668\n",
      "Epoch [9400/10001], Loss: 0.6235, RMSE: 0.7914\n",
      "Epoch [9500/10001], Loss: 0.6107, RMSE: 0.7752\n",
      "Epoch [9600/10001], Loss: 0.5919, RMSE: 0.7680\n",
      "Epoch [9700/10001], Loss: 0.6103, RMSE: 0.7808\n",
      "Epoch [9800/10001], Loss: 0.6030, RMSE: 0.7729\n",
      "Epoch [9900/10001], Loss: 0.5914, RMSE: 0.7710\n",
      "Epoch [10000/10001], Loss: 0.6314, RMSE: 0.7959\n"
     ]
    }
   ],
   "source": [
    "# 定义存储损失的列表\n",
    "train_losses = []\n",
    "train_epochs = []\n",
    "rmse_list = []\n",
    "for epoch in range(num_epochs):\n",
    "    # 前向传播\n",
    "    outputs = model(X_train)\n",
    "    loss = criterion(outputs, y_train)\n",
    "    # 计算L1正则化项\n",
    "    # 创建新的变量以避免原位操作\n",
    "    l1_regularization = torch.tensor(0., dtype=torch.float32)  \n",
    "    for param in model.parameters():\n",
    "        l1_regularization += torch.norm(param, p=1)\n",
    "    # 计算带有L1正则化的总损失\n",
    "    l1_loss = loss + best_l1_lambda * l1_regularization\n",
    "    # 反向传播和优化器更新\n",
    "    optimizer.zero_grad()\n",
    "    l1_loss.backward()\n",
    "    optimizer.step()\n",
    "    # 在训练集上计算MSE\n",
    "    with torch.no_grad():\n",
    "        train_predictions = model(X_train)\n",
    "        mse = criterion(train_predictions, y_train)\n",
    "    # 将训练集标签转换为张量\n",
    "    y_train = y_train.view(-1, 1)\n",
    "    # 计RMSE并将其添加到列表中\n",
    "    rmse = torch.sqrt(mse)\n",
    "    # 每迭代100次打印损失\n",
    "    if (epoch+1) % 100 == 0:\n",
    "        # 将数据存储到列表中，便于可视化分析\n",
    "        train_losses.append(loss.item())\n",
    "        train_epochs.append(epoch+1)\n",
    "        rmse_list.append(rmse.item())\n",
    "        print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}, RMSE: {rmse:.4f}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 478,
   "id": "6fb0ae93",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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xgcffMDZZ5/N4sWLOeqoo6isrOTGG2/cosd+zz33bDGypra2tiOwL1y4kJ/97GcAHHjggR0zT5533nls3ryZH/3oR10+O3v2bK6++mpmz55NWVkZQ4cO5fHHH2fu3LlceOGF+P1+ampqOOecc9hrr704+eSTqays5Bvf+Abf+ta3eO211zoauB2R8T32lki8v4thjNlByWl7hw0bts1pe+fMmcNLL73ErFmz+MlPfsI777zDyJEjufXWW9lvv/1YuXIl69at44MPPqCyspLVq1dz1113MWHCBFSV6urqjjlm3nrrLV544QXefPPNjnI0NjbS3t7eEVwvuOACAGKxGOAan2effZaqqiq++c1vMnXqVH79618zbtw4li1bRnt7O8OGDeOss87iyiuvZMyYMZx22mnceuutTJw4kXfffZfp06cza9asjiGZ5557LjfeeONOnU0yowN70Cd2gZIxWSA5be+iRYs6esh33HFHxyiZefPm8f777zN9+nTmz5/PlClTOqbt/etf/9oxbe+ZZ57JlClTOtY7evRoRo8ezXvvvceUKVM4/vjjyc/PZ9WqVVxzzTXMnj27IxVy6aWX8s9//rPHm1g3Nrp7wVZVVTFx4kSuueYagsEgs2bN6mgEpk2bxnnnncf06dOZMWMGhx12GOCOCq677jouu+wyhg8fzqOPPsqdd97JT3/6UwA++eQTpk2bRm5uLpFIhDvuuIMDDjhgh/Zn2qbt7asdmbb34ocWsHpzKy/+8MidXCpjBoZsnra3N8kTrpngyzRtb9oF7eSpMQNWb9P29iZTgvr2yOyTp347eWrMjurvo3azbdvz/WR0YPfb7I7G7JDc3Fxqa2stuH9JJYdLft50U0YfiwRtSgFjdkhlZSVr165lR+49bNIrNzeXysrKz/WZjA7slooxZscEg0HGjh3b38UwO1lGp2LsRhvGGLOlzA7sdqMNY4zZQoYHdpvd0RhjusvswO6zwG6MMd2lNbCLyB9EZErvS26fgM9HPKE2VMsYY1KkLbCLyBHAMFV9Jl3bCPjc9JbWazfGmE5pCewiEgRmAStFZGo6tgHu5ClgN9swxpgU6eqxnw98BNwKHCwiV6RjI0G/67FH7SIlY4zpkK7Avj8wU1U3AI8AX099U0QuFpEFIrJgR65483upmLj12I0xpkO6AvsyYFfv8URgVeqbqjpT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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制训练损失与均方根误差曲线图\n",
    "plt.plot(train_epochs, train_losses, label='训练损失')\n",
    "plt.plot(train_epochs, rmse_list, label='训练均方根误差')\n",
    "plt.xlabel('迭代次数')\n",
    "plt.ylabel('损失值')\n",
    "plt.title('损失值与均方根误差曲线图')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 480,
   "id": "f096ccca",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 模型预测\n",
    "test_inputs = torch.Tensor(X_test)\n",
    "predictions = model(test_inputs).squeeze().detach().numpy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 481,
   "id": "f81b50ba",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 可视化分析\n",
    "plt.plot(y_test.squeeze(), label='真实值')\n",
    "plt.plot(predictions, label='预测值')\n",
    "plt.title('真实值与预测值对比图')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 482,
   "id": "74f75f13",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>AL</th>\n",
       "      <th>AK</th>\n",
       "      <th>AZ</th>\n",
       "      <th>AR</th>\n",
       "      <th>CA</th>\n",
       "      <th>CO</th>\n",
       "      <th>CT</th>\n",
       "      <th>FL</th>\n",
       "      <th>GA</th>\n",
       "      <th>ID</th>\n",
       "      <th>...</th>\n",
       "      <th>shop.2</th>\n",
       "      <th>restaurant.2</th>\n",
       "      <th>spent_time.2</th>\n",
       "      <th>large_event.2</th>\n",
       "      <th>public_transit.2</th>\n",
       "      <th>anxious.2</th>\n",
       "      <th>depressed.2</th>\n",
       "      <th>felt_isolated.2</th>\n",
       "      <th>worried_become_ill.2</th>\n",
       "      <th>worried_finances.2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>52.071090</td>\n",
       "      <td>8.624001</td>\n",
       "      <td>29.374792</td>\n",
       "      <td>5.391413</td>\n",
       "      <td>2.754804</td>\n",
       "      <td>19.695098</td>\n",
       "      <td>13.685645</td>\n",
       "      <td>24.747837</td>\n",
       "      <td>66.194950</td>\n",
       "      <td>44.873473</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>58.742461</td>\n",
       "      <td>21.720187</td>\n",
       "      <td>41.375784</td>\n",
       "      <td>9.450179</td>\n",
       "      <td>3.150088</td>\n",
       "      <td>22.075715</td>\n",
       "      <td>17.302077</td>\n",
       "      <td>23.559622</td>\n",
       "      <td>57.015009</td>\n",
       "      <td>38.372829</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>59.109045</td>\n",
       "      <td>20.123959</td>\n",
       "      <td>40.072556</td>\n",
       "      <td>8.781522</td>\n",
       "      <td>2.888209</td>\n",
       "      <td>23.920870</td>\n",
       "      <td>18.342506</td>\n",
       "      <td>24.993341</td>\n",
       "      <td>55.291498</td>\n",
       "      <td>38.907257</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>55.442267</td>\n",
       "      <td>16.083529</td>\n",
       "      <td>36.977612</td>\n",
       "      <td>5.199286</td>\n",
       "      <td>2.575347</td>\n",
       "      <td>21.073800</td>\n",
       "      <td>12.087171</td>\n",
       "      <td>18.608723</td>\n",
       "      <td>67.036197</td>\n",
       "      <td>43.142779</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>60.588783</td>\n",
       "      <td>19.503010</td>\n",
       "      <td>42.631236</td>\n",
       "      <td>11.549771</td>\n",
       "      <td>8.530551</td>\n",
       "      <td>15.896575</td>\n",
       "      <td>11.781634</td>\n",
       "      <td>15.065228</td>\n",
       "      <td>61.196518</td>\n",
       "      <td>43.574676</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>56.762931</td>\n",
       "      <td>21.494159</td>\n",
       "      <td>44.202567</td>\n",
       "      <td>14.996865</td>\n",
       "      <td>2.291745</td>\n",
       "      <td>17.740003</td>\n",
       "      <td>12.822676</td>\n",
       "      <td>18.123344</td>\n",
       "      <td>60.417531</td>\n",
       "      <td>37.156229</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>57.888461</td>\n",
       "      <td>16.770893</td>\n",
       "      <td>37.373472</td>\n",
       "      <td>7.169675</td>\n",
       "      <td>2.631595</td>\n",
       "      <td>20.587449</td>\n",
       "      <td>15.960166</td>\n",
       "      <td>23.710310</td>\n",
       "      <td>58.758735</td>\n",
       "      <td>38.673787</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>...</td>\n",
       "      <td>57.589848</td>\n",
       "      <td>16.761311</td>\n",
       "      <td>36.874822</td>\n",
       "      <td>11.046907</td>\n",
       "      <td>1.912310</td>\n",
       "      <td>16.800220</td>\n",
       "      <td>13.280423</td>\n",
       "      <td>22.423640</td>\n",
       "      <td>60.934851</td>\n",
       "      <td>43.122513</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>891</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>57.966384</td>\n",
       "      <td>22.696669</td>\n",
       "      <td>45.350415</td>\n",
       "      <td>20.343487</td>\n",
       "      <td>2.385330</td>\n",
       "      <td>16.528265</td>\n",
       "      <td>15.092539</td>\n",
       "      <td>17.476063</td>\n",
       "      <td>54.862386</td>\n",
       "      <td>44.016255</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>892</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>55.920650</td>\n",
       "      <td>17.002257</td>\n",
       "      <td>37.749348</td>\n",
       "      <td>9.955671</td>\n",
       "      <td>1.731796</td>\n",
       "      <td>18.555496</td>\n",
       "      <td>13.776335</td>\n",
       "      <td>21.217106</td>\n",
       "      <td>66.870763</td>\n",
       "      <td>37.930859</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>893 rows × 93 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      AL   AK   AZ   AR   CA   CO   CT   FL   GA   ID  ...     shop.2  \\\n",
       "0    0.0  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  ...  52.071090   \n",
       "1    0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  58.742461   \n",
       "2    0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  59.109045   \n",
       "3    0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  55.442267   \n",
       "4    0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  60.588783   \n",
       "..   ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...        ...   \n",
       "888  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  56.762931   \n",
       "889  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  57.888461   \n",
       "890  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  ...  57.589848   \n",
       "891  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  57.966384   \n",
       "892  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  55.920650   \n",
       "\n",
       "     restaurant.2  spent_time.2  large_event.2  public_transit.2  anxious.2  \\\n",
       "0        8.624001     29.374792       5.391413          2.754804  19.695098   \n",
       "1       21.720187     41.375784       9.450179          3.150088  22.075715   \n",
       "2       20.123959     40.072556       8.781522          2.888209  23.920870   \n",
       "3       16.083529     36.977612       5.199286          2.575347  21.073800   \n",
       "4       19.503010     42.631236      11.549771          8.530551  15.896575   \n",
       "..            ...           ...            ...               ...        ...   \n",
       "888     21.494159     44.202567      14.996865          2.291745  17.740003   \n",
       "889     16.770893     37.373472       7.169675          2.631595  20.587449   \n",
       "890     16.761311     36.874822      11.046907          1.912310  16.800220   \n",
       "891     22.696669     45.350415      20.343487          2.385330  16.528265   \n",
       "892     17.002257     37.749348       9.955671          1.731796  18.555496   \n",
       "\n",
       "     depressed.2  felt_isolated.2  worried_become_ill.2  worried_finances.2  \n",
       "0      13.685645        24.747837             66.194950           44.873473  \n",
       "1      17.302077        23.559622             57.015009           38.372829  \n",
       "2      18.342506        24.993341             55.291498           38.907257  \n",
       "3      12.087171        18.608723             67.036197           43.142779  \n",
       "4      11.781634        15.065228             61.196518           43.574676  \n",
       "..           ...              ...                   ...                 ...  \n",
       "888    12.822676        18.123344             60.417531           37.156229  \n",
       "889    15.960166        23.710310             58.758735           38.673787  \n",
       "890    13.280423        22.423640             60.934851           43.122513  \n",
       "891    15.092539        17.476063             54.862386           44.016255  \n",
       "892    13.776335        21.217106             66.870763           37.930859  \n",
       "\n",
       "[893 rows x 93 columns]"
      ]
     },
     "execution_count": 482,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 去除id列\n",
    "test1 = covid_test.drop(['id'], axis=1)\n",
    "test1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 483,
   "id": "e8741b6d",
   "metadata": {},
   "outputs": [],
   "source": [
    "test2 = test1.iloc[:,cols]\n",
    "# 去除MA列\n",
    "test2 = test2.drop('MA',axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 484,
   "id": "cc36edce",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.74716257,  0.85033742,  0.8139962 , ...,  0.34630061,\n",
       "         0.27716307,  0.10036909],\n",
       "       [-1.35201514, -1.3878019 , -1.65231316, ...,  0.70121533,\n",
       "        -1.33826122, -1.3119887 ],\n",
       "       [-1.17315279, -1.2564418 , -1.65761337, ...,  0.46608093,\n",
       "        -1.64155313, -1.19587641],\n",
       "       ...,\n",
       "       [ 0.12098881,  0.08514113,  1.37416519, ..., -0.41015354,\n",
       "        -0.64847373, -0.28005199],\n",
       "       [ 0.40290523,  0.35293484,  0.2536118 , ...,  0.0145592 ,\n",
       "        -1.7170654 , -0.08587364],\n",
       "       [-0.18426851, -0.18501556,  0.62254318, ..., -0.57223171,\n",
       "         0.39608821, -1.408013  ]])"
      ]
     },
     "execution_count": 484,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "import numpy as np\n",
    "# 创建StandardScaler对象\n",
    "scaler = StandardScaler()\n",
    "# 对数据进行标准化处理\n",
    "test3 = scaler.fit_transform(test2)\n",
    "test3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 485,
   "id": "0fea21a8",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将测试数据转换为 PyTorch 的张量类型\n",
    "test4 = torch.tensor(test3, dtype=torch.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 486,
   "id": "60f4558a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[21.509405  ],\n",
       "       [ 2.549297  ],\n",
       "       [ 3.1294951 ],\n",
       "       [11.428817  ],\n",
       "       [ 0.5180947 ],\n",
       "       [26.907755  ],\n",
       "       [25.11659   ],\n",
       "       [ 7.9527993 ],\n",
       "       [10.959432  ],\n",
       "       [11.53081   ],\n",
       "       [18.285397  ],\n",
       "       [21.198141  ],\n",
       "       [22.469755  ],\n",
       "       [13.4436655 ],\n",
       "       [22.05615   ],\n",
       "       [19.14145   ],\n",
       "       [30.168509  ],\n",
       "       [ 8.370968  ],\n",
       "       [22.855482  ],\n",
       "       [ 0.8156958 ],\n",
       "       [ 7.25402   ],\n",
       "       [24.589808  ],\n",
       "       [18.722025  ],\n",
       "       [14.130683  ],\n",
       "       [12.338315  ],\n",
       "       [28.539892  ],\n",
       "       [27.347486  ],\n",
       "       [27.91184   ],\n",
       "       [ 6.305296  ],\n",
       "       [19.422388  ],\n",
       "       [11.087829  ],\n",
       "       [ 6.6555276 ],\n",
       "       [27.84881   ],\n",
       "       [12.778004  ],\n",
       "       [21.01105   ],\n",
       "       [32.085922  ],\n",
       "       [12.451745  ],\n",
       "       [ 6.731646  ],\n",
       "       [16.22278   ],\n",
       "       [ 8.9166765 ],\n",
       "       [16.23491   ],\n",
       "       [ 4.790345  ],\n",
       "       [ 7.6250176 ],\n",
       "       [18.176565  ],\n",
       "       [ 6.2268558 ],\n",
       "       [16.490377  ],\n",
       "       [15.488499  ],\n",
       "       [ 1.3839946 ],\n",
       "       [ 6.3513875 ],\n",
       "       [14.958846  ],\n",
       "       [17.331022  ],\n",
       "       [13.405694  ],\n",
       "       [13.351586  ],\n",
       "       [ 7.9594765 ],\n",
       "       [14.485577  ],\n",
       "       [28.648966  ],\n",
       "       [ 8.495128  ],\n",
       "       [16.00472   ],\n",
       "       [34.728935  ],\n",
       "       [10.6964445 ],\n",
       "       [19.761934  ],\n",
       "       [23.03502   ],\n",
       "       [25.573172  ],\n",
       "       [23.03475   ],\n",
       "       [18.569412  ],\n",
       "       [ 2.400297  ],\n",
       "       [12.588033  ],\n",
       "       [24.196562  ],\n",
       "       [32.15214   ],\n",
       "       [17.782108  ],\n",
       "       [20.051935  ],\n",
       "       [16.313375  ],\n",
       "       [12.43249   ],\n",
       "       [26.67275   ],\n",
       "       [14.332667  ],\n",
       "       [ 2.371006  ],\n",
       "       [19.29793   ],\n",
       "       [13.044573  ],\n",
       "       [ 7.6018424 ],\n",
       "       [ 7.438934  ],\n",
       "       [18.045948  ],\n",
       "       [10.03456   ],\n",
       "       [11.908114  ],\n",
       "       [16.247976  ],\n",
       "       [10.1755    ],\n",
       "       [17.374937  ],\n",
       "       [23.779558  ],\n",
       "       [11.097531  ],\n",
       "       [ 5.9293904 ],\n",
       "       [17.641994  ],\n",
       "       [28.137339  ],\n",
       "       [35.48232   ],\n",
       "       [18.218706  ],\n",
       "       [ 5.561718  ],\n",
       "       [11.968643  ],\n",
       "       [11.605576  ],\n",
       "       [12.303454  ],\n",
       "       [23.301685  ],\n",
       "       [12.33145   ],\n",
       "       [13.4349    ],\n",
       "       [ 5.2800317 ],\n",
       "       [ 9.040372  ],\n",
       "       [15.757649  ],\n",
       "       [13.241555  ],\n",
       "       [ 4.0901647 ],\n",
       "       [31.789667  ],\n",
       "       [29.376802  ],\n",
       "       [11.718112  ],\n",
       "       [20.70135   ],\n",
       "       [ 8.413505  ],\n",
       "       [13.408989  ],\n",
       "       [ 6.4365582 ],\n",
       "       [21.594385  ],\n",
       "       [25.81426   ],\n",
       "       [15.455537  ],\n",
       "       [11.503375  ],\n",
       "       [ 9.570104  ],\n",
       "       [29.907522  ],\n",
       "       [20.206135  ],\n",
       "       [11.579686  ],\n",
       "       [12.942702  ],\n",
       "       [23.765055  ],\n",
       "       [10.307149  ],\n",
       "       [20.047586  ],\n",
       "       [33.612736  ],\n",
       "       [11.466577  ],\n",
       "       [11.362988  ],\n",
       "       [ 5.284855  ],\n",
       "       [ 1.9740373 ],\n",
       "       [10.810121  ],\n",
       "       [17.16769   ],\n",
       "       [12.908305  ],\n",
       "       [12.499812  ],\n",
       "       [16.115538  ],\n",
       "       [23.458801  ],\n",
       "       [19.022495  ],\n",
       "       [23.64166   ],\n",
       "       [ 4.7195706 ],\n",
       "       [16.345512  ],\n",
       "       [33.93801   ],\n",
       "       [25.77439   ],\n",
       "       [18.029364  ],\n",
       "       [24.19286   ],\n",
       "       [26.182451  ],\n",
       "       [12.111226  ],\n",
       "       [35.421474  ],\n",
       "       [ 5.783036  ],\n",
       "       [13.19506   ],\n",
       "       [19.46573   ],\n",
       "       [16.566013  ],\n",
       "       [21.183672  ],\n",
       "       [ 8.424779  ],\n",
       "       [21.447683  ],\n",
       "       [ 5.390204  ],\n",
       "       [33.045887  ],\n",
       "       [17.375551  ],\n",
       "       [17.700035  ],\n",
       "       [26.663551  ],\n",
       "       [17.896875  ],\n",
       "       [17.969952  ],\n",
       "       [17.836763  ],\n",
       "       [23.647179  ],\n",
       "       [12.839957  ],\n",
       "       [15.425058  ],\n",
       "       [15.953144  ],\n",
       "       [24.743341  ],\n",
       "       [26.728985  ],\n",
       "       [16.47065   ],\n",
       "       [29.525213  ],\n",
       "       [18.366663  ],\n",
       "       [12.924401  ],\n",
       "       [13.549947  ],\n",
       "       [25.291315  ],\n",
       "       [38.572628  ],\n",
       "       [23.24808   ],\n",
       "       [ 5.043501  ],\n",
       "       [ 7.0972652 ],\n",
       "       [32.50203   ],\n",
       "       [29.302687  ],\n",
       "       [24.194798  ],\n",
       "       [16.405643  ],\n",
       "       [23.849665  ],\n",
       "       [27.378931  ],\n",
       "       [ 9.247437  ],\n",
       "       [19.166424  ],\n",
       "       [10.478169  ],\n",
       "       [19.204824  ],\n",
       "       [ 5.075664  ],\n",
       "       [13.256741  ],\n",
       "       [27.1813    ],\n",
       "       [ 4.2820406 ],\n",
       "       [24.637888  ],\n",
       "       [26.720514  ],\n",
       "       [ 7.6790433 ],\n",
       "       [13.09649   ],\n",
       "       [30.918907  ],\n",
       "       [ 9.178025  ],\n",
       "       [26.52136   ],\n",
       "       [10.613856  ],\n",
       "       [18.849977  ],\n",
       "       [24.364952  ],\n",
       "       [16.81425   ],\n",
       "       [23.21039   ],\n",
       "       [13.655129  ],\n",
       "       [27.213493  ],\n",
       "       [21.697508  ],\n",
       "       [15.644666  ],\n",
       "       [28.450258  ],\n",
       "       [16.785006  ],\n",
       "       [ 8.835298  ],\n",
       "       [11.1895    ],\n",
       "       [16.48551   ],\n",
       "       [30.866762  ],\n",
       "       [ 4.960633  ],\n",
       "       [11.669355  ],\n",
       "       [13.991253  ],\n",
       "       [ 7.863133  ],\n",
       "       [15.372427  ],\n",
       "       [10.992432  ],\n",
       "       [10.166852  ],\n",
       "       [16.105618  ],\n",
       "       [10.836357  ],\n",
       "       [14.016199  ],\n",
       "       [12.903799  ],\n",
       "       [24.637327  ],\n",
       "       [21.027822  ],\n",
       "       [13.804158  ],\n",
       "       [ 6.346297  ],\n",
       "       [ 9.642015  ],\n",
       "       [34.854195  ],\n",
       "       [17.175701  ],\n",
       "       [ 6.4340224 ],\n",
       "       [13.982348  ],\n",
       "       [21.359335  ],\n",
       "       [ 9.969067  ],\n",
       "       [33.531403  ],\n",
       "       [20.077251  ],\n",
       "       [21.418428  ],\n",
       "       [20.479132  ],\n",
       "       [31.66224   ],\n",
       "       [11.946289  ],\n",
       "       [27.784536  ],\n",
       "       [28.930868  ],\n",
       "       [28.319223  ],\n",
       "       [13.101617  ],\n",
       "       [ 9.8122635 ],\n",
       "       [15.600258  ],\n",
       "       [26.444387  ],\n",
       "       [19.118624  ],\n",
       "       [12.568675  ],\n",
       "       [23.242647  ],\n",
       "       [16.756037  ],\n",
       "       [22.523962  ],\n",
       "       [11.70593   ],\n",
       "       [13.506961  ],\n",
       "       [ 9.736861  ],\n",
       "       [ 5.817006  ],\n",
       "       [19.659143  ],\n",
       "       [15.662112  ],\n",
       "       [ 5.448814  ],\n",
       "       [13.180445  ],\n",
       "       [ 0.31372416],\n",
       "       [ 7.0127373 ],\n",
       "       [22.294527  ],\n",
       "       [15.157998  ],\n",
       "       [ 6.202599  ],\n",
       "       [25.367662  ],\n",
       "       [26.793535  ],\n",
       "       [ 6.8337464 ],\n",
       "       [12.094972  ],\n",
       "       [14.242196  ],\n",
       "       [ 8.097199  ],\n",
       "       [20.429262  ],\n",
       "       [12.681883  ],\n",
       "       [ 7.6977572 ],\n",
       "       [17.204012  ],\n",
       "       [21.795416  ],\n",
       "       [ 9.170034  ],\n",
       "       [15.320177  ],\n",
       "       [18.65251   ],\n",
       "       [22.027533  ],\n",
       "       [21.651274  ],\n",
       "       [17.664225  ],\n",
       "       [24.295004  ],\n",
       "       [17.95304   ],\n",
       "       [21.645681  ],\n",
       "       [23.421618  ],\n",
       "       [29.324305  ],\n",
       "       [ 5.2069473 ],\n",
       "       [21.160643  ],\n",
       "       [12.852681  ],\n",
       "       [17.34437   ],\n",
       "       [ 3.6943998 ],\n",
       "       [ 1.76328   ],\n",
       "       [22.160244  ],\n",
       "       [15.989726  ],\n",
       "       [ 5.0980463 ],\n",
       "       [23.117477  ],\n",
       "       [11.521474  ],\n",
       "       [10.995719  ],\n",
       "       [12.48257   ],\n",
       "       [22.289488  ],\n",
       "       [10.149184  ],\n",
       "       [20.913378  ],\n",
       "       [13.186032  ],\n",
       "       [18.122026  ],\n",
       "       [23.14815   ],\n",
       "       [31.606604  ],\n",
       "       [11.967186  ],\n",
       "       [12.600209  ],\n",
       "       [10.324776  ],\n",
       "       [24.58344   ],\n",
       "       [ 8.690273  ],\n",
       "       [23.892956  ],\n",
       "       [18.856056  ],\n",
       "       [15.466475  ],\n",
       "       [30.377916  ],\n",
       "       [18.637167  ],\n",
       "       [19.212498  ],\n",
       "       [16.594942  ],\n",
       "       [ 1.3870865 ],\n",
       "       [ 5.8734756 ],\n",
       "       [26.900114  ],\n",
       "       [18.3645    ],\n",
       "       [ 6.2239895 ],\n",
       "       [20.927107  ],\n",
       "       [ 3.5121326 ],\n",
       "       [25.473173  ],\n",
       "       [18.940504  ],\n",
       "       [24.75202   ],\n",
       "       [ 8.901866  ],\n",
       "       [24.889177  ],\n",
       "       [13.349959  ],\n",
       "       [ 5.085645  ],\n",
       "       [12.044934  ],\n",
       "       [12.242034  ],\n",
       "       [24.580269  ],\n",
       "       [ 9.830827  ],\n",
       "       [10.30745   ],\n",
       "       [21.72389   ],\n",
       "       [14.974071  ],\n",
       "       [ 9.471105  ],\n",
       "       [22.459814  ],\n",
       "       [15.954764  ],\n",
       "       [ 4.787496  ],\n",
       "       [19.397017  ],\n",
       "       [27.666693  ],\n",
       "       [23.693336  ],\n",
       "       [20.49764   ],\n",
       "       [17.18841   ],\n",
       "       [ 7.755459  ],\n",
       "       [24.671247  ],\n",
       "       [17.069384  ],\n",
       "       [15.6816225 ],\n",
       "       [ 5.894744  ],\n",
       "       [17.376749  ],\n",
       "       [23.88325   ],\n",
       "       [17.25332   ],\n",
       "       [23.31727   ],\n",
       "       [14.848048  ],\n",
       "       [ 5.675938  ],\n",
       "       [19.258541  ],\n",
       "       [ 9.652997  ],\n",
       "       [13.620793  ],\n",
       "       [19.706272  ],\n",
       "       [33.105507  ],\n",
       "       [15.837386  ],\n",
       "       [16.923346  ],\n",
       "       [ 6.0771112 ],\n",
       "       [14.210336  ],\n",
       "       [19.866795  ],\n",
       "       [15.83216   ],\n",
       "       [17.687878  ],\n",
       "       [11.7102    ],\n",
       "       [ 1.5986943 ],\n",
       "       [14.727513  ],\n",
       "       [ 8.527196  ],\n",
       "       [ 8.769111  ],\n",
       "       [16.607267  ],\n",
       "       [19.796827  ],\n",
       "       [27.798426  ],\n",
       "       [14.52833   ],\n",
       "       [ 9.929397  ],\n",
       "       [20.477781  ],\n",
       "       [ 3.9174483 ],\n",
       "       [14.469495  ],\n",
       "       [16.333672  ],\n",
       "       [17.433348  ],\n",
       "       [14.930331  ],\n",
       "       [16.562769  ],\n",
       "       [30.50165   ],\n",
       "       [13.358634  ],\n",
       "       [29.14049   ],\n",
       "       [17.176365  ],\n",
       "       [ 8.255513  ],\n",
       "       [14.142159  ],\n",
       "       [29.259726  ],\n",
       "       [20.178572  ],\n",
       "       [24.363043  ],\n",
       "       [12.920743  ],\n",
       "       [16.602783  ],\n",
       "       [20.541636  ],\n",
       "       [ 7.7339764 ],\n",
       "       [31.429918  ],\n",
       "       [31.230795  ],\n",
       "       [11.3422    ],\n",
       "       [ 9.627419  ],\n",
       "       [25.254921  ],\n",
       "       [12.384377  ],\n",
       "       [16.502762  ],\n",
       "       [20.271376  ],\n",
       "       [ 7.926082  ],\n",
       "       [24.125193  ],\n",
       "       [12.829184  ],\n",
       "       [ 8.88007   ],\n",
       "       [20.59141   ],\n",
       "       [20.155687  ],\n",
       "       [25.012735  ],\n",
       "       [25.94724   ],\n",
       "       [ 9.932432  ],\n",
       "       [16.4023    ],\n",
       "       [ 3.7326493 ],\n",
       "       [ 7.1203136 ],\n",
       "       [11.3412485 ],\n",
       "       [22.407953  ],\n",
       "       [13.641121  ],\n",
       "       [18.14145   ],\n",
       "       [ 9.43492   ],\n",
       "       [32.758915  ],\n",
       "       [22.541542  ],\n",
       "       [10.507614  ],\n",
       "       [20.66767   ],\n",
       "       [16.99769   ],\n",
       "       [12.905652  ],\n",
       "       [ 7.5757475 ],\n",
       "       [22.00033   ],\n",
       "       [34.50283   ],\n",
       "       [13.539345  ],\n",
       "       [ 2.2937534 ],\n",
       "       [ 3.9416647 ],\n",
       "       [ 7.449962  ],\n",
       "       [ 5.353957  ],\n",
       "       [20.403278  ],\n",
       "       [19.065722  ],\n",
       "       [19.97515   ],\n",
       "       [ 1.9561869 ],\n",
       "       [ 1.2192035 ],\n",
       "       [14.60209   ],\n",
       "       [25.485863  ],\n",
       "       [24.65997   ],\n",
       "       [14.614923  ],\n",
       "       [ 6.0943456 ],\n",
       "       [28.603933  ],\n",
       "       [13.750669  ],\n",
       "       [11.747369  ],\n",
       "       [ 9.867801  ],\n",
       "       [25.340933  ],\n",
       "       [17.348026  ],\n",
       "       [21.863016  ],\n",
       "       [ 5.425533  ],\n",
       "       [22.508837  ],\n",
       "       [ 8.688569  ],\n",
       "       [15.328868  ],\n",
       "       [16.794178  ],\n",
       "       [ 8.171094  ],\n",
       "       [ 9.084989  ],\n",
       "       [ 8.644044  ],\n",
       "       [ 8.21554   ],\n",
       "       [11.107436  ],\n",
       "       [24.520586  ],\n",
       "       [18.168074  ],\n",
       "       [12.136073  ],\n",
       "       [24.104023  ],\n",
       "       [11.382604  ],\n",
       "       [14.729635  ],\n",
       "       [ 6.254563  ],\n",
       "       [14.045623  ],\n",
       "       [20.224678  ],\n",
       "       [23.328634  ],\n",
       "       [23.642971  ],\n",
       "       [23.808977  ],\n",
       "       [20.405771  ],\n",
       "       [25.180525  ],\n",
       "       [19.797709  ],\n",
       "       [26.560951  ],\n",
       "       [ 4.8147526 ],\n",
       "       [18.639742  ],\n",
       "       [17.7185    ],\n",
       "       [24.183748  ],\n",
       "       [ 9.250964  ],\n",
       "       [11.78767   ],\n",
       "       [20.846094  ],\n",
       "       [18.813822  ],\n",
       "       [14.239807  ],\n",
       "       [16.62697   ],\n",
       "       [16.36162   ],\n",
       "       [15.077774  ],\n",
       "       [ 4.6388063 ],\n",
       "       [ 1.9629017 ],\n",
       "       [11.399219  ],\n",
       "       [15.020383  ],\n",
       "       [ 5.2379317 ],\n",
       "       [18.494244  ],\n",
       "       [11.497617  ],\n",
       "       [24.513083  ],\n",
       "       [25.54849   ],\n",
       "       [22.814829  ],\n",
       "       [10.802533  ],\n",
       "       [10.065253  ],\n",
       "       [17.007942  ],\n",
       "       [18.181738  ],\n",
       "       [14.162549  ],\n",
       "       [19.434118  ],\n",
       "       [ 9.605088  ],\n",
       "       [25.821362  ],\n",
       "       [13.225736  ],\n",
       "       [14.48042   ],\n",
       "       [13.913529  ],\n",
       "       [14.405607  ],\n",
       "       [29.16226   ],\n",
       "       [26.945219  ],\n",
       "       [16.083462  ],\n",
       "       [17.748991  ],\n",
       "       [23.853266  ],\n",
       "       [12.316554  ],\n",
       "       [32.9898    ],\n",
       "       [ 4.3767233 ],\n",
       "       [16.746588  ],\n",
       "       [16.656712  ],\n",
       "       [ 9.281646  ],\n",
       "       [17.15085   ],\n",
       "       [10.638848  ],\n",
       "       [12.3754225 ],\n",
       "       [13.3747835 ],\n",
       "       [24.170208  ],\n",
       "       [ 4.0677543 ],\n",
       "       [26.338163  ],\n",
       "       [ 9.263269  ],\n",
       "       [24.430511  ],\n",
       "       [15.433324  ],\n",
       "       [40.854786  ],\n",
       "       [13.281961  ],\n",
       "       [20.837528  ],\n",
       "       [ 4.781556  ],\n",
       "       [10.3476305 ],\n",
       "       [ 8.664638  ],\n",
       "       [ 6.862766  ],\n",
       "       [26.724447  ],\n",
       "       [21.259993  ],\n",
       "       [11.968343  ],\n",
       "       [11.943641  ],\n",
       "       [ 6.702167  ],\n",
       "       [19.243917  ],\n",
       "       [29.179016  ],\n",
       "       [20.847528  ],\n",
       "       [ 5.0446143 ],\n",
       "       [14.992406  ],\n",
       "       [16.794516  ],\n",
       "       [25.945936  ],\n",
       "       [18.443556  ],\n",
       "       [10.459117  ],\n",
       "       [12.036969  ],\n",
       "       [22.504267  ],\n",
       "       [19.731539  ],\n",
       "       [23.826216  ],\n",
       "       [11.848621  ],\n",
       "       [23.655193  ],\n",
       "       [25.251196  ],\n",
       "       [ 4.6640406 ],\n",
       "       [27.163229  ],\n",
       "       [13.238105  ],\n",
       "       [17.400068  ],\n",
       "       [28.977781  ],\n",
       "       [24.891214  ],\n",
       "       [ 4.5596175 ],\n",
       "       [19.440226  ],\n",
       "       [25.162775  ],\n",
       "       [34.56339   ],\n",
       "       [19.938108  ],\n",
       "       [20.859625  ],\n",
       "       [12.024462  ],\n",
       "       [ 8.866138  ],\n",
       "       [12.8841    ],\n",
       "       [ 9.534179  ],\n",
       "       [17.01635   ],\n",
       "       [ 9.719644  ],\n",
       "       [32.455486  ],\n",
       "       [12.150968  ],\n",
       "       [ 6.3923817 ],\n",
       "       [11.230567  ],\n",
       "       [11.799146  ],\n",
       "       [23.497498  ],\n",
       "       [20.738226  ],\n",
       "       [32.41058   ],\n",
       "       [29.501362  ],\n",
       "       [31.52334   ],\n",
       "       [ 9.3519    ],\n",
       "       [12.457955  ],\n",
       "       [23.147123  ],\n",
       "       [24.227415  ],\n",
       "       [ 6.910217  ],\n",
       "       [ 9.432015  ],\n",
       "       [17.881014  ],\n",
       "       [17.698252  ],\n",
       "       [18.017845  ],\n",
       "       [21.510405  ],\n",
       "       [18.036142  ],\n",
       "       [29.329834  ],\n",
       "       [15.090632  ],\n",
       "       [23.898851  ],\n",
       "       [ 4.7301083 ],\n",
       "       [17.31187   ],\n",
       "       [ 9.522511  ],\n",
       "       [28.670717  ],\n",
       "       [24.714802  ],\n",
       "       [10.846892  ],\n",
       "       [23.905283  ],\n",
       "       [13.249796  ],\n",
       "       [20.308752  ],\n",
       "       [12.307967  ],\n",
       "       [ 7.534723  ],\n",
       "       [15.571799  ],\n",
       "       [ 9.254537  ],\n",
       "       [24.714506  ],\n",
       "       [12.222193  ],\n",
       "       [27.045721  ],\n",
       "       [15.596986  ],\n",
       "       [16.537226  ],\n",
       "       [19.345087  ],\n",
       "       [10.751091  ],\n",
       "       [30.090591  ],\n",
       "       [19.237013  ],\n",
       "       [29.97867   ],\n",
       "       [26.107706  ],\n",
       "       [21.87897   ],\n",
       "       [11.417592  ],\n",
       "       [17.75255   ],\n",
       "       [11.512428  ],\n",
       "       [19.006128  ],\n",
       "       [21.439705  ],\n",
       "       [ 9.761832  ],\n",
       "       [12.632422  ],\n",
       "       [26.709047  ],\n",
       "       [30.862165  ],\n",
       "       [22.984055  ],\n",
       "       [30.027678  ],\n",
       "       [ 9.118506  ],\n",
       "       [24.42341   ],\n",
       "       [ 4.7614727 ],\n",
       "       [14.192313  ],\n",
       "       [15.249739  ],\n",
       "       [17.679392  ],\n",
       "       [12.793973  ],\n",
       "       [12.224996  ],\n",
       "       [14.206132  ],\n",
       "       [15.979683  ],\n",
       "       [13.169015  ],\n",
       "       [30.84078   ],\n",
       "       [12.427684  ],\n",
       "       [ 5.2338896 ],\n",
       "       [28.351883  ],\n",
       "       [26.627222  ],\n",
       "       [ 8.888728  ],\n",
       "       [10.722622  ],\n",
       "       [10.31224   ],\n",
       "       [ 5.622269  ],\n",
       "       [25.628626  ],\n",
       "       [ 9.880297  ],\n",
       "       [21.634325  ],\n",
       "       [22.401794  ],\n",
       "       [11.718049  ],\n",
       "       [ 5.970754  ],\n",
       "       [ 9.381705  ],\n",
       "       [15.610661  ],\n",
       "       [ 1.6191787 ],\n",
       "       [13.995544  ],\n",
       "       [22.227877  ],\n",
       "       [25.300287  ],\n",
       "       [17.143476  ],\n",
       "       [11.246897  ],\n",
       "       [15.843779  ],\n",
       "       [10.380713  ],\n",
       "       [17.45323   ],\n",
       "       [19.75722   ],\n",
       "       [ 0.93450695],\n",
       "       [28.477865  ],\n",
       "       [20.105194  ],\n",
       "       [14.278024  ],\n",
       "       [ 5.802468  ],\n",
       "       [13.112523  ],\n",
       "       [18.1197    ],\n",
       "       [ 8.852174  ],\n",
       "       [15.357906  ],\n",
       "       [ 1.9964694 ],\n",
       "       [ 1.4184756 ],\n",
       "       [10.183098  ],\n",
       "       [22.77635   ],\n",
       "       [31.422358  ],\n",
       "       [28.16162   ],\n",
       "       [ 5.3838115 ],\n",
       "       [ 6.615928  ],\n",
       "       [ 2.2709055 ],\n",
       "       [19.930262  ],\n",
       "       [17.812386  ],\n",
       "       [29.256487  ],\n",
       "       [ 6.01304   ],\n",
       "       [17.76124   ],\n",
       "       [ 6.2876086 ],\n",
       "       [11.214618  ],\n",
       "       [13.960992  ],\n",
       "       [22.02669   ],\n",
       "       [ 9.754552  ],\n",
       "       [24.716333  ],\n",
       "       [12.025993  ],\n",
       "       [ 4.6283593 ],\n",
       "       [ 1.4177853 ],\n",
       "       [ 8.264851  ],\n",
       "       [21.844477  ],\n",
       "       [12.428398  ],\n",
       "       [21.915243  ],\n",
       "       [ 8.336298  ],\n",
       "       [ 4.5265374 ],\n",
       "       [19.983238  ],\n",
       "       [27.26781   ],\n",
       "       [ 6.4499717 ],\n",
       "       [19.34088   ],\n",
       "       [ 3.6817832 ],\n",
       "       [13.872064  ],\n",
       "       [ 7.827868  ],\n",
       "       [17.438288  ],\n",
       "       [ 7.576239  ],\n",
       "       [ 8.212295  ],\n",
       "       [21.504293  ],\n",
       "       [ 6.768479  ],\n",
       "       [21.614126  ],\n",
       "       [15.981359  ],\n",
       "       [ 5.940949  ],\n",
       "       [21.456696  ],\n",
       "       [ 6.507071  ],\n",
       "       [24.864752  ],\n",
       "       [17.935978  ],\n",
       "       [16.381487  ],\n",
       "       [11.458735  ],\n",
       "       [25.103424  ],\n",
       "       [13.990203  ],\n",
       "       [14.224529  ],\n",
       "       [27.509117  ],\n",
       "       [29.742844  ],\n",
       "       [18.700436  ],\n",
       "       [ 7.0930996 ],\n",
       "       [ 7.1553555 ],\n",
       "       [24.602026  ],\n",
       "       [ 6.600511  ],\n",
       "       [10.734772  ],\n",
       "       [21.91324   ],\n",
       "       [21.579685  ],\n",
       "       [19.716368  ],\n",
       "       [16.17801   ],\n",
       "       [12.600484  ],\n",
       "       [ 8.873115  ],\n",
       "       [16.278582  ],\n",
       "       [ 9.907271  ],\n",
       "       [ 5.6456733 ],\n",
       "       [24.626135  ],\n",
       "       [30.202059  ],\n",
       "       [24.616365  ],\n",
       "       [20.923708  ],\n",
       "       [ 7.055736  ],\n",
       "       [12.676148  ],\n",
       "       [12.821166  ],\n",
       "       [18.372942  ],\n",
       "       [12.121487  ],\n",
       "       [25.347734  ],\n",
       "       [19.15917   ],\n",
       "       [ 4.781071  ],\n",
       "       [10.553747  ],\n",
       "       [22.659006  ],\n",
       "       [21.209002  ],\n",
       "       [19.073692  ],\n",
       "       [12.530894  ],\n",
       "       [21.866158  ],\n",
       "       [31.856411  ],\n",
       "       [16.892408  ],\n",
       "       [22.173029  ],\n",
       "       [ 9.895469  ],\n",
       "       [ 5.627209  ],\n",
       "       [ 5.744305  ],\n",
       "       [19.79727   ],\n",
       "       [22.375269  ],\n",
       "       [15.059871  ],\n",
       "       [21.027174  ],\n",
       "       [ 6.915817  ],\n",
       "       [11.645623  ],\n",
       "       [15.989122  ],\n",
       "       [10.154079  ],\n",
       "       [20.899137  ],\n",
       "       [12.492587  ],\n",
       "       [11.171649  ],\n",
       "       [ 8.332313  ],\n",
       "       [15.723775  ],\n",
       "       [12.9773655 ],\n",
       "       [11.523555  ],\n",
       "       [ 7.601093  ],\n",
       "       [13.443948  ],\n",
       "       [12.62964   ],\n",
       "       [22.499601  ],\n",
       "       [11.4350195 ],\n",
       "       [19.80826   ],\n",
       "       [20.8541    ],\n",
       "       [29.529299  ],\n",
       "       [14.252656  ],\n",
       "       [17.30987   ],\n",
       "       [14.267543  ],\n",
       "       [17.096785  ],\n",
       "       [ 8.303538  ],\n",
       "       [ 1.4400625 ],\n",
       "       [ 6.6065707 ],\n",
       "       [16.655075  ],\n",
       "       [30.277418  ],\n",
       "       [ 7.4774337 ],\n",
       "       [22.969656  ],\n",
       "       [15.657671  ],\n",
       "       [16.983032  ],\n",
       "       [19.838955  ],\n",
       "       [24.859636  ],\n",
       "       [ 4.727512  ],\n",
       "       [ 9.452764  ],\n",
       "       [19.958002  ],\n",
       "       [20.937727  ],\n",
       "       [15.20525   ],\n",
       "       [17.805326  ],\n",
       "       [ 4.4271073 ],\n",
       "       [12.578427  ],\n",
       "       [11.974171  ],\n",
       "       [13.591533  ],\n",
       "       [28.825224  ],\n",
       "       [13.085557  ],\n",
       "       [17.683298  ],\n",
       "       [21.451906  ],\n",
       "       [18.134022  ],\n",
       "       [19.938135  ],\n",
       "       [38.276455  ],\n",
       "       [33.227245  ],\n",
       "       [19.177912  ],\n",
       "       [19.079903  ],\n",
       "       [ 5.0851226 ],\n",
       "       [13.703103  ],\n",
       "       [17.401587  ],\n",
       "       [ 7.7522907 ],\n",
       "       [12.792766  ],\n",
       "       [ 5.301333  ],\n",
       "       [ 5.457837  ],\n",
       "       [ 5.933294  ],\n",
       "       [ 9.530543  ],\n",
       "       [ 6.3514857 ],\n",
       "       [25.168013  ],\n",
       "       [23.66841   ],\n",
       "       [20.172407  ],\n",
       "       [ 5.9948745 ],\n",
       "       [13.859065  ],\n",
       "       [22.012278  ],\n",
       "       [21.070982  ],\n",
       "       [22.147451  ],\n",
       "       [22.487816  ],\n",
       "       [12.892801  ],\n",
       "       [ 6.3268256 ],\n",
       "       [10.268592  ],\n",
       "       [10.395999  ],\n",
       "       [24.788004  ],\n",
       "       [24.84115   ],\n",
       "       [ 9.674274  ],\n",
       "       [11.697346  ],\n",
       "       [14.826345  ],\n",
       "       [35.212616  ],\n",
       "       [27.800539  ],\n",
       "       [19.05777   ],\n",
       "       [19.39677   ],\n",
       "       [10.778106  ],\n",
       "       [20.372923  ],\n",
       "       [16.427216  ],\n",
       "       [ 7.746948  ],\n",
       "       [13.224686  ],\n",
       "       [ 8.930712  ],\n",
       "       [14.220695  ],\n",
       "       [28.308142  ],\n",
       "       [14.768794  ],\n",
       "       [30.691568  ],\n",
       "       [19.384827  ],\n",
       "       [14.953588  ],\n",
       "       [ 4.2801538 ],\n",
       "       [31.722933  ],\n",
       "       [25.387228  ],\n",
       "       [18.423351  ]], dtype=float32)"
      ]
     },
     "execution_count": 486,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.eval()\n",
    "test_outputs = model(test4)\n",
    "predicted_labels = test_outputs.detach().numpy()\n",
    "predicted_labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 488,
   "id": "0bd546c2",
   "metadata": {},
   "outputs": [],
   "source": [
    "#导入 sampleSubmission 表\n",
    "sampleSubmission = pd.read_csv(r'C:\\Users\\Administrator\\Desktop\\3-COVID-19\\sampleSubmission.csv', sep = ',')\n",
    "# 创建新表\n",
    "MLP_sampleSubmission = pd.DataFrame()\n",
    "MLP_sampleSubmission .to_csv(r'C:\\Users\\Administrator\\Desktop\\3-COVID-19\\MLP_sampleSubmission.csv', index=False)\n",
    "# 写入id列\n",
    "MLP_sampleSubmission[\"id\"] =sampleSubmission[\"id\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 489,
   "id": "95ab5d74",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将数据写入特定一列\n",
    "MLP_sampleSubmission['tested_positive'] = predicted_labels[:len(sampleSubmission)]  # 只写入与数据帧行数相匹配的部分数组数据\n",
    "# 写回 CSV 文件\n",
    "MLP_sampleSubmission.to_csv(r'C:\\Users\\Administrator\\Desktop\\3-COVID-19\\MLP_sampleSubmission.csv', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 490,
   "id": "059f225e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>tested_positive</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>21.509405</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>2.549297</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>3.129495</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>11.428817</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>0.518095</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>888</td>\n",
       "      <td>14.953588</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>889</td>\n",
       "      <td>4.280154</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>890</td>\n",
       "      <td>31.722933</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>891</th>\n",
       "      <td>891</td>\n",
       "      <td>25.387228</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>892</th>\n",
       "      <td>892</td>\n",
       "      <td>18.423351</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>893 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      id  tested_positive\n",
       "0      0        21.509405\n",
       "1      1         2.549297\n",
       "2      2         3.129495\n",
       "3      3        11.428817\n",
       "4      4         0.518095\n",
       "..   ...              ...\n",
       "888  888        14.953588\n",
       "889  889         4.280154\n",
       "890  890        31.722933\n",
       "891  891        25.387228\n",
       "892  892        18.423351\n",
       "\n",
       "[893 rows x 2 columns]"
      ]
     },
     "execution_count": 490,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "MLP_sampleSubmission"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
